package cn.piesat.controller;

import cn.piesat.service.intf.UserInfoConfigService;
import cn.piesat.util.ResponseWrapperUtil;
import cn.piesat.vo.userInfoConfig.AddUserInfoConfigVO;
import cn.piesat.vo.userInfoConfig.PartUserInfoConfigVO;
import cn.piesat.vo.userInfoConfig.UserInfoConfigVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

/**
 * 用户配置项控制层接口定义
 *
 * @author xhl
 */
@RestController
public class UserInfoConfigController {

    @Autowired
    private UserInfoConfigService userInfoConfigService;

    /**
     * 批量保存用户配置项信息（包括添加和修改），如果id为null表示新增，如果id不为null则表示修改
     * @param dataList 用户配置项信息集合
     * @return
     */
    @PostMapping("/manager/userinfo/save")
    public String saveConfig(@Valid @RequestBody List<AddUserInfoConfigVO> dataList) {
        Map<String,String> resultMap = null;
        try {
            resultMap = userInfoConfigService.save(dataList);
        } catch (Exception e) {
            return ResponseWrapperUtil.executeCustomTips("false","保存用户配置项信息接口异常");
        }
        return ResponseWrapperUtil.executeCustomTips(resultMap.get("success"),resultMap.get("message"));
    }

    /**
     * 获取全部用户配置项信息列表，按照创建时间正序
     * @return
     */
    @GetMapping("/manager/userinfo/getAll")
    public String findAll() {
        List<UserInfoConfigVO> dataList = userInfoConfigService.list();
        return ResponseWrapperUtil.executeResultList(dataList);
    }

    /**
     * 根据用户配置项信息ID删除配置项和该配置项相关的用户信息
     * @param id 用户配置项ID
     * @return
     */
    @DeleteMapping("/manager/userinfo/del/{id}")
    public String delete(@PathVariable("id") String id) {
        try {
            userInfoConfigService.deleteById(id);
        } catch (Exception e) {
            return ResponseWrapperUtil.executeCustomTips("false", "删除失败");
        }
        return ResponseWrapperUtil.executeCustomTips("true", "删除成功");
    }

    /**
     * 根据类型标识显示表单
     * @param type
     * @return
     */
    @GetMapping("/manager/userinfo/page/view/{type}")
    public String configView(@PathVariable("type") String type) {
        List<PartUserInfoConfigVO> resultList = userInfoConfigService.listConfigView(type);
        return ResponseWrapperUtil.executeResultList(resultList);
    }
}
